home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / comm / bbs / Hydra11s.lha / HBBS / Source / Common / Shared.c < prev    next >
Text File  |  1996-08-05  |  10KB  |  246 lines

  1.  
  2. void ClearNodeData(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
  3. {
  4.   // small subroutine to set all the default values
  5.   // never call if you've allocated mem for strings!
  6.   NS->SysopAccount=NULL;
  7.   NS->NodeName=NULL;
  8.   NS->NodePhone=NULL;
  9.   NS->NodeConnectScript=NULL;
  10.  
  11.   NS->AskUserPW=FALSE;
  12.  
  13.   NS->UseSysPW=FALSE;
  14.   NS->SysPW=NULL;
  15.   NS->SysPWScript=NULL;
  16.   NS->SysPWPrompt=NULL;
  17.  
  18.   NS->UseNodePW=FALSE;
  19.   NS->NodePW=NULL;
  20.   NS->NodePWScript=NULL;
  21.   NS->NodePWPrompt=NULL;
  22.  
  23.   NS->UserNamePrompt=NULL;
  24.   NS->UserPWPrompt=NULL;
  25.  
  26.   NS->NodeLogFile=NULL;
  27.   NS->ModemLogFile=NULL;
  28.   NS->CallersLogFile=NULL;
  29.   NS->UploadLog=FALSE;
  30.   NS->DownloadLog=FALSE;
  31.   NS->DoorLogFile=NULL;
  32.   NS->DoorLog=FALSE;
  33.  
  34.   NS->ChatFlag=FALSE;
  35.   NS->Iconified=FALSE;
  36.   NS->UseOwnScreen=FALSE;
  37.   NS->StartScreen=FALSE;
  38.   NS->AccessRequired=0;
  39.   NS->ScrModeID=0;
  40.   NS->ScrWidth=0;
  41.   NS->ScrHeight=0;
  42.   NS->ScrDepth=0;
  43.   NS->UseDevice=FALSE;
  44.   NS->AllowNewUsers=FALSE;
  45.  
  46.   NS->NodePlayPen=NULL;
  47.   NS->MaxDIZLines=0;
  48. }
  49.  
  50. void SetNodeSettingsDefaults(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
  51. {
  52.   // small subroutine to set all the default values
  53.  
  54.   FreeAndSet(&NS->SysPW,"PASSWORD");
  55.   FreeAndSet(&NS->SysPWPrompt,"System PW:");
  56.   FreeAndSet(&NS->NodePW,"PASSWORD");
  57.   FreeAndSet(&NS->NodePWPrompt,"Node PW:");
  58.   FreeAndSet(&NS->UserNamePrompt,"Username:");
  59.   FreeAndSet(&NS->UserPWPrompt,"Password:");
  60.   NS->AskUserPW=TRUE;
  61.   NS->UploadLog=TRUE;
  62.   NS->DownloadLog=TRUE;
  63.   NS->ChatFlag=TRUE;
  64.   NS->UseOwnScreen=TRUE;
  65.   NS->AccessRequired=0;
  66.   NS->UseDevice=FALSE;
  67.   NS->ScrModeID=BBSGlobal->ScreenInfo.ScrModeID;
  68.   NS->ScrWidth= BBSGlobal->ScreenInfo.ScrWidth;
  69.   NS->ScrHeight=BBSGlobal->ScreenInfo.ScrHeight;
  70.   NS->ScrDepth=BBSGlobal->ScreenInfo.ScrDepth;
  71.   NS->AllowNewUsers=TRUE;
  72.   NS->MaxDIZLines=12;
  73. }
  74.  
  75.  
  76. void CopyNodeSettings(struct NodeSettingsData *dest,struct NodeSettingsData *source)
  77. {
  78.   FreeAndSet(&dest->SysopAccount      ,source->SysopAccount);
  79.   FreeAndSet(&dest->NodeName          ,source->NodeName);
  80.   FreeAndSet(&dest->NodePhone         ,source->NodePhone);
  81.   FreeAndSet(&dest->NodeConnectScript ,source->NodeConnectScript);
  82.  
  83.               dest->AskUserPW         =source->AskUserPW;
  84.  
  85.               dest->UseSysPW          =source->UseSysPW;
  86.   FreeAndSet(&dest->SysPW             ,source->SysPW);
  87.   FreeAndSet(&dest->SysPWScript       ,source->SysPWScript);
  88.   FreeAndSet(&dest->SysPWPrompt       ,source->SysPWPrompt);
  89.  
  90.               dest->UseNodePW         =source->UseNodePW;
  91.   FreeAndSet(&dest->NodePW            ,source->NodePW);
  92.   FreeAndSet(&dest->NodePWScript      ,source->NodePWScript);
  93.   FreeAndSet(&dest->NodePWPrompt      ,source->NodePWPrompt);
  94.  
  95.   FreeAndSet(&dest->UserNamePrompt    ,source->UserNamePrompt);
  96.   FreeAndSet(&dest->UserPWPrompt      ,source->UserPWPrompt);
  97.  
  98.   FreeAndSet(&dest->NodeLogFile       ,source->NodeLogFile);
  99.   FreeAndSet(&dest->ModemLogFile      ,source->ModemLogFile);
  100.   FreeAndSet(&dest->CallersLogFile    ,source->CallersLogFile);
  101.   FreeAndSet(&dest->DoorLogFile       ,source->DoorLogFile);
  102.               dest->DoorLog           =source->DoorLog;
  103.               dest->UploadLog         =source->UploadLog;
  104.               dest->DownloadLog       =source->DownloadLog;
  105.  
  106.               dest->ChatFlag          =source->ChatFlag;
  107.               dest->Iconified         =source->Iconified;
  108.               dest->UseOwnScreen      =source->UseOwnScreen;
  109.               dest->StartScreen       =source->StartScreen;
  110.               dest->AccessRequired    =source->AccessRequired;
  111.  
  112.               dest->ScrModeID         =source->ScrModeID;
  113.               dest->ScrWidth          =source->ScrWidth;
  114.               dest->ScrHeight         =source->ScrHeight;
  115.               dest->ScrDepth          =source->ScrDepth;
  116.  
  117.               dest->UseDevice         =source->UseDevice;
  118.               dest->AllowNewUsers     =source->AllowNewUsers;
  119.   FreeAndSet(&dest->NodePlayPen       ,source->NodePlayPen);
  120.               dest->MaxDIZLines       =source->MaxDIZLines;
  121. }
  122.  
  123. void FreeNodeSettingsData(struct NodeSettingsData *NS) // different to InitNodeData() in Control_Main.c
  124. {
  125.   FreeStr(NS->SysopAccount);
  126.   FreeStr(NS->NodeName);
  127.   FreeStr(NS->NodePhone);
  128.   FreeStr(NS->NodeConnectScript);
  129.  
  130.   FreeStr(NS->SysPW);
  131.   FreeStr(NS->SysPWScript);
  132.   FreeStr(NS->SysPWPrompt);
  133.  
  134.   FreeStr(NS->NodePW);
  135.   FreeStr(NS->NodePWScript);
  136.   FreeStr(NS->NodePWPrompt);
  137.  
  138.   FreeStr(NS->UserNamePrompt);
  139.   FreeStr(NS->UserPWPrompt);
  140.  
  141.   FreeStr(NS->NodeLogFile);
  142.   FreeStr(NS->ModemLogFile);
  143.   FreeStr(NS->CallersLogFile);
  144.   FreeStr(NS->DoorLogFile);
  145.   FreeStr(NS->NodePlayPen);
  146. }
  147.  
  148.  
  149. V_ERROR LoadNodeSettingsData(ULONG NodeNum,struct NodeSettingsData *NS )
  150. {
  151.   struct CfgFileData *NodeCFG;
  152.   V_ERROR error=TYPE_NONE;
  153.   UBYTE *filename=NULL;
  154.   struct NodeData *ND;
  155.   UBYTE ecode=0;
  156.  
  157.   if (NodeNum==NODE_GLOBAL) // as opposed to a valid nodenumber... hmm, does this mean we are limited to ULONG nodes ? :-))))))
  158.   {
  159.     // only clear for global
  160.     ClearNodeData(NS);
  161.     SetNodeSettingsDefaults(NS);
  162.     filename=FILE_NODEGLOBAL;
  163.   }
  164.   else
  165.   {
  166.     if (ND=(struct NodeData*)GetNode(BBSGlobal->NodeList,NodeNum))
  167.     {
  168.       // erk, i can't belive i did this...                vvvvvvvvvvvvvvvvvvvvvvvvv
  169.       if (filename=AllocVec(strlen(ND->NodeLocation)+30/*strlen(FILENAME_NODELOCAL)+1*/,MEMF_PUBLIC))
  170.       {
  171.         strcpy(filename,ND->NodeLocation);
  172.         strcat(filename,FILENAME_NODELOCAL);
  173.       }
  174.     }
  175.   }
  176.  
  177.   if (filename)
  178.   {
  179.     if (NodeCFG=HBBS_LoadConfig(filename,LCFG_NONE))
  180.     {
  181.       // get settings!
  182.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->SysopAccount     ,VTYPE_STRING,OPT_NODE_SysopAccount,OPT_SINGLE) && NodeNum==NODE_GLOBAL) ecode=1; // *C* document required presence in NodeGlobal
  183.  
  184.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeName         ,VTYPE_STRING,OPT_NODE_NodeName,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=2;
  185.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodePhone        ,VTYPE_STRING,OPT_NODE_NodePhone,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=3;
  186.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeConnectScript,VTYPE_STRING,OPT_NODE_NodeConnectScript,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=4;
  187.  
  188.       HBBS_GetSetting(NodeCFG,(void *)&NS->AskUserPW        ,VTYPE_BOOL,OPT_NODE_AskUserPW ,OPT_SINGLE);
  189.  
  190.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->UseSysPW         ,VTYPE_BOOL,OPT_NODE_UseSysPW ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=5;
  191.       HBBS_GetSetting(NodeCFG,(void *)&NS->SysPW            ,VTYPE_STRING,OPT_NODE_SysPW,OPT_SINGLE);
  192.       HBBS_GetSetting(NodeCFG,(void *)&NS->SysPWScript      ,VTYPE_STRING,OPT_NODE_SysPWScript,OPT_SINGLE);
  193.       HBBS_GetSetting(NodeCFG,(void *)&NS->SysPWPrompt      ,VTYPE_STRING,OPT_NODE_SysPWPrompt ,OPT_SINGLE);
  194.  
  195.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->UseNodePW        ,VTYPE_BOOL,OPT_NODE_UseNodePW ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=6;
  196.       HBBS_GetSetting(NodeCFG,(void *)&NS->NodePW           ,VTYPE_STRING,OPT_NODE_NodePW,OPT_SINGLE);
  197.       HBBS_GetSetting(NodeCFG,(void *)&NS->NodePWScript     ,VTYPE_STRING,OPT_NODE_NodePWScript,OPT_SINGLE);
  198.       HBBS_GetSetting(NodeCFG,(void *)&NS->NodePWPrompt     ,VTYPE_STRING,OPT_NODE_NodePWPrompt ,OPT_SINGLE);
  199.  
  200.       HBBS_GetSetting(NodeCFG,(void *)&NS->UserNamePrompt   ,VTYPE_STRING,OPT_NODE_UserNamePrompt ,OPT_SINGLE);
  201.       HBBS_GetSetting(NodeCFG,(void *)&NS->UserPWPrompt     ,VTYPE_STRING,OPT_NODE_UserPWPrompt ,OPT_SINGLE);
  202.  
  203.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodeLogFile      ,VTYPE_STRING,OPT_NODE_NodeLogFile,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=7;
  204.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->ModemLogFile     ,VTYPE_STRING,OPT_NODE_ModemLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=8;
  205.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->CallersLogFile   ,VTYPE_STRING,OPT_NODE_CallersLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=9;
  206.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->DoorLogFile      ,VTYPE_STRING,OPT_NODE_DoorLogFile ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=10;
  207.  
  208.       HBBS_GetSetting(NodeCFG,(void *)&NS->DoorLog          ,VTYPE_BOOL,OPT_NODE_DoorLog ,OPT_SINGLE);
  209.  
  210.       HBBS_GetSetting(NodeCFG,(void *)&NS->UploadLog        ,VTYPE_BOOL,OPT_NODE_UploadLog ,OPT_SINGLE);
  211.       HBBS_GetSetting(NodeCFG,(void *)&NS->DownloadLog      ,VTYPE_BOOL,OPT_NODE_DownloadLog ,OPT_SINGLE);
  212.  
  213.       HBBS_GetSetting(NodeCFG,(void *)&NS->ChatFlag         ,VTYPE_BOOL,OPT_NODE_ChatFlag ,OPT_SINGLE);
  214.       HBBS_GetSetting(NodeCFG,(void *)&NS->Iconified        ,VTYPE_BOOL,OPT_NODE_Iconified ,OPT_SINGLE);
  215.       HBBS_GetSetting(NodeCFG,(void *)&NS->UseOwnScreen     ,VTYPE_BOOL,OPT_NODE_UseOwnScreen ,OPT_SINGLE);
  216.       HBBS_GetSetting(NodeCFG,(void *)&NS->StartScreen      ,VTYPE_BOOL,OPT_NODE_StartScreen ,OPT_SINGLE);
  217.  
  218.       HBBS_GetSetting(NodeCFG,(void *)&NS->AccessRequired   ,VTYPE_SMALLNUM,OPT_NODE_AccessRequired,OPT_SINGLE);
  219.  
  220.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrModeID        ,VTYPE_BIGNUM,OPT_NODE_ScrModeID,OPT_SINGLE);
  221.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrHeight        ,VTYPE_BIGNUM,OPT_NODE_ScrHeight,OPT_SINGLE);
  222.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrWidth         ,VTYPE_BIGNUM,OPT_NODE_ScrWidth,OPT_SINGLE);
  223.       HBBS_GetSetting(NodeCFG,(void *)&NS->ScrDepth         ,VTYPE_BIGNUM,OPT_NODE_ScrDepth,OPT_SINGLE);
  224.  
  225.       HBBS_GetSetting(NodeCFG,(void *)&NS->UseDevice        ,VTYPE_BOOL,OPT_NODE_UseDevice ,OPT_SINGLE);
  226.       HBBS_GetSetting(NodeCFG,(void *)&NS->AllowNewUsers    ,VTYPE_BOOL,OPT_NODE_AllowNewUsers ,OPT_SINGLE);
  227.  
  228.       if (!HBBS_GetSetting(NodeCFG,(void *)&NS->NodePlayPen      ,VTYPE_PATH,OPT_NODE_NodePlayPen ,OPT_SINGLE) && NodeNum!=NODE_GLOBAL) ecode=11;
  229.       HBBS_GetSetting(NodeCFG,(void *)&NS->MaxDIZLines      ,VTYPE_SMALLNUM,OPT_NODE_MaxDIZLines ,OPT_SINGLE);
  230.  
  231.       HBBS_FlushConfig(NodeCFG);
  232.     }
  233.  
  234.     if (ecode)
  235.     {
  236.       HBBS_DoErrorMessage(EMSG_NODESETTINGS+ecode-1,NodeNum,filename);
  237.       error=TYPE_FATAL;
  238.     }
  239.  
  240.     if (NodeNum!=NODE_GLOBAL) FreeVec(filename);
  241.   }
  242.  
  243.   return(error);
  244. }
  245.  
  246.